package com.seespring.weiniying.config;
 
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.seespring.weiniying.pojo.Basic;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
 
import java.time.LocalDateTime;
import java.util.Objects;
 
// 字段创建时间更新时间字段配置项
@Component
public class BaseEntityConfig implements MetaObjectHandler {
    /**
     * 使用mp做添加操作时候，这个方法执行
     *
     * @param metaObject 元对象
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        if (Objects.nonNull(metaObject) && metaObject.getOriginalObject() instanceof Basic) {
            Basic basic = (Basic) metaObject.getOriginalObject();
            LocalDateTime now = LocalDateTime.now();
            // 创建时间为空，则以当前时间为插入时间
            if (Objects.isNull(basic.getCreateTime())) {
                basic.setCreateTime(now);
            }
            // 更新时间为空，则以当前时间为更新时间
            if (Objects.isNull(basic.getUpdateTime())) {
                basic.setUpdateTime(now);
            }
        }
    }

    /**
     * 使用mp做修改操作时候，这个方法执行
     *
     * @param metaObject 元对象
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updatedTime", LocalDateTime.now(), metaObject);
    }
}